]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell: Ignore non-toplevels for ShellWindowTracker::tracked-windows-changed
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 19 Jul 2019 16:17:54 +0000 (18:17 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Wed, 21 Aug 2019 16:53:36 +0000 (16:53 +0000)
Popups and other override-redirect windows are meaningless to everything
that depends on the ShellWindowTracker. Ignoring those windows will result
in less ShellApp::windows-changed signal emissions, and less activity in
the AppMenuButton and everything else that depends on them.

Reduces gnome-shell CPU activity while typing on the Epiphany addressbar,
as the pop up animation there results in a number of xdg_popup being
created and destroyed.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/642
https://gitlab.gnome.org/GNOME/mutter/issues/556

src/shell-window-tracker.c

index 9ad8ecfbaefc1ac8c4e135f94928dfc360290e98..075cb2a1649a021f669057b5298f8db13c28b04d 100644 (file)
@@ -535,12 +535,17 @@ track_window (ShellWindowTracker *self,
 
 static void
 shell_window_tracker_on_window_added (MetaWorkspace   *workspace,
-                                   MetaWindow      *window,
-                                   gpointer         user_data)
+                                      MetaWindow      *window,
+                                      gpointer         user_data)
 {
   ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
+  MetaWindowType window_type = meta_window_get_window_type (window);
 
-  track_window (self, window);
+  if (window_type == META_WINDOW_NORMAL ||
+      window_type == META_WINDOW_DIALOG ||
+      window_type == META_WINDOW_UTILITY ||
+      window_type == META_WINDOW_MODAL_DIALOG)
+    track_window (self, window);
 }
 
 static void